/**
 * 浮点数计算
 * add
 * subtract
 * multiply
 * divide
 */

/**判断是否为数字 */
function isNumber(val) {
	var regPos = /^\d+(\.\d+)?$/; //非负浮点数
    var regNeg = /^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/; //负浮点数
    if(regPos.test(val) || regNeg.test(val)){
        return true;
    }else{
        return false;
    }
}
/**浮点数处理 */
function formateNumber(num) {
	let result= parseFloat(num.toFixed(2));
	if(!isNumber(result)){
		return 0;
	}
	return result;
}
/**加 */
function add(a, b) {
	//不为数字
	if (!isNumber(a) && !isNumber(b)) {
		return 0;
	}
	if (!isNumber(a)) {
		return b;
	}
	if (!isNumber(b)) {
		return a;
	}
	
	return formateNumber(parseFloat(a) + parseFloat(b));
}
/**减 */
function subtract(a, b) {
	//不为数字
	if (!isNumber(a) && !isNumber(b)) {
		return 0;
	}
	if (!isNumber(a)) {
		return b;
	}
	if (!isNumber(b)) {
		return a;
	}
	
	return formateNumber(parseFloat(a) - parseFloat(b));
}
/**乘 */
function multiply(a, b) {
	//不为数字
	if (!isNumber(a) && !isNumber(b)) {
		return 0;
	}
	if (!isNumber(a)) {
		return b;
	}
	if (!isNumber(b)) {
		return a;
	}
	
	return formateNumber(parseFloat(a) * parseFloat(b))
}
/**除 */
function divide(a, b) {
	//不为数字
	if(!isNumber(a)&&!isNumber(b)){
		return 0;
	}
	if(!isNumber(a)){
		return b;
	}
	if(!isNumber(b)){
		return a;
	}
	
	//除数为0
	if(b===0){
		return a;
	}
	return formateNumber(parseFloat(a)/parseFloat(b))
}
/**格式化 */
function parseNumber(n){
	if(!isNumber(n)){
		return 0;
	}
	return formateNumber(parseFloat(n));
}

export default {
	'add': add,
	'subtract': subtract,
	'multiply': multiply,
	'divide': divide,
	'parseNumber':parseNumber
}
